package com.winner.monitor;

import org.springframework.context.ApplicationListener;
import org.springframework.context.event.ContextRefreshedEvent;
import org.springframework.stereotype.Component;

/**
 * 第一个具体的监听器
 * 而在Spring的web项目中，我们可以介入Spring的启动过程。我们希望在Spring容器将所有的Bean都初始化完成之后，做一些操作，这个时候我们就可以用ContextRefreshedEvent
 * 以Spring的内置事件ContextRefreshedEvent为例,当ApplicationContext被初始化或刷新时，会触发ContextRefreshedEvent事件.如下代码示例:
 */
@Component
public class LearnListener implements ApplicationListener<ContextRefreshedEvent> {

	@Override
	public void onApplicationEvent(ContextRefreshedEvent event) {
		// 需要执行的逻辑代码，当spring容器初始化完成后就会执行该方法。
		System.out.println("监听到第一个onApplicationEvent");
		//获取所有的bean
		String[] definitionNames = event.getApplicationContext().getBeanDefinitionNames();
		for (String name : definitionNames) {
			//打印名称
			System.out.println("definitionNames的name = " + name);
		}
	}
}
